/**
 * Auth 工具类
 * 负责管理用户和商家的 token 存储和获取
 */

// 存储键名定义
const StorageKeys = {
	USER_TOKEN: 'token',
	MERCHANT_TOKEN: 'shop_token',
	USER_INFO: 'user_info',
	MERCHANT_INFO: 'merchant_info'
}

/**
 * 获取用户 token
 * @returns {string} 用户token
 */
export function getUserToken() {
	return uni.getStorageSync(StorageKeys.USER_TOKEN) || '';
}

/**
 * 设置用户 token
 * @param {string} token 用户token
 */
export function setUserToken(token) {
	uni.setStorageSync(StorageKeys.USER_TOKEN, token);
}

/**
 * 获取商家 token
 * @returns {string} 商家token
 */
export function getMerchantToken() {
	return uni.getStorageSync(StorageKeys.MERCHANT_TOKEN) || '';
}

/**
 * 设置商家 token
 * @param {string} token 商家token
 */
export function setMerchantToken(token) {
	uni.setStorageSync(StorageKeys.MERCHANT_TOKEN, token);
}

/**
 * 获取用户信息
 * @returns {Object|null} 用户信息对象
 */
export function getUserInfo() {
	return uni.getStorageSync(StorageKeys.USER_INFO) || null;
}

/**
 * 设置用户信息
 * @param {Object} info 用户信息对象
 */
export function setUserInfo(info) {
	uni.setStorageSync(StorageKeys.USER_INFO, info);
}

/**
 * 获取商家信息
 * @returns {Object|null} 商家信息对象
 */
export function getMerchantInfo() {
	return uni.getStorageSync(StorageKeys.MERCHANT_INFO) || null;
}

/**
 * 设置商家信息
 * @param {Object} info 商家信息对象
 */
export function setMerchantInfo(info) {
	uni.setStorageSync(StorageKeys.MERCHANT_INFO, info);
}

/**
 * 清除用户认证信息
 */
export function clearUserAuth() {
	uni.removeStorageSync(StorageKeys.USER_TOKEN);
	uni.removeStorageSync(StorageKeys.USER_INFO);
}

/**
 * 清除商家认证信息
 */
export function clearMerchantAuth() {
	uni.removeStorageSync(StorageKeys.MERCHANT_TOKEN);
	uni.removeStorageSync(StorageKeys.MERCHANT_INFO);
}

/**
 * 清除所有认证信息
 */
export function clearAllAuth() {
	clearUserAuth();
	clearMerchantAuth();
}

/**
 * 检查用户是否已登录
 * @returns {boolean} 是否已登录
 */
export function isUserLoggedIn() {
	return !!getUserToken();
}

/**
 * 检查商家是否已登录
 * @returns {boolean} 是否已登录
 */
export function isMerchantLoggedIn() {
	return !!getMerchantToken();
}